package jschool.modelos;

import javax.swing.table.AbstractTableModel;

import jschool.entidades.Estudiante;
import jschool.manejadores.ManejadorDeEstudiante;

public class ModeloEstudiante extends AbstractTableModel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String[] encabezado = null;
	private static ModeloEstudiante instancia = null;
	private ManejadorDeEstudiante manejadorDeEstudiante = null;
	private Estudiante estudiante = null;

	public ModeloEstudiante() {
		encabezado = new String[] {};
		manejadorDeEstudiante = ManejadorDeEstudiante.getInstancia();
	}

	public static ModeloEstudiante getInstancia() {
		if (instancia == null) {
			instancia = new ModeloEstudiante();
		}
		return instancia;
	}

	public String getColumnName(int posicion) {
		return encabezado[posicion];
	}

	@Override
	public int getColumnCount() {

		return encabezado.length;
	}

	@Override
	public int getRowCount() {

		return manejadorDeEstudiante.getEstudiante().size();
	}

	@Override
	public Object getValueAt(int fila, int col) {
		estudiante = manejadorDeEstudiante.getEstudiante().get(fila);
		String retorno = "";
		switch (col) {
		case 0:
			retorno = String.valueOf(estudiante.getIdEstudiante());

			break;
		case 1:
			retorno = String.valueOf(estudiante.getIdCurso());
			break;
		case 2:
			retorno = estudiante.getNombre();
			break;

		case 3:
			retorno = estudiante.getApellido();
			break;
		case 4:
			retorno = estudiante.getDireccion();
			break;
		case 5:
			retorno = estudiante.getTelefono1();
			break;
		case 6:
			retorno = estudiante.getTelefono2();
			break;
		case 7:
			retorno = estudiante.getEmail();
			break;
		case 8:
			retorno = estudiante.getSexo();
			break;
		case 9:
			retorno = estudiante.getEstadoCivil();
			break;
		case 10:
			retorno = estudiante.getFechaNacimiento();
			break;
		case 11:
			retorno = estudiante.getFechaInscripcion();
			break;
		case 12:
			retorno = estudiante.getNacionalidad();
			break;
		case 13:
			retorno = estudiante.getNombrePadre();
			break;
		case 14:
			retorno = estudiante.getTelefonoPadre();
			break;
		case 15:
			retorno = estudiante.getNombreMadre();
			break;
		case 16:
			retorno = estudiante.getTelefonoMadre();
			break;
		case 17:
			retorno = estudiante.getCedulaPadre();
			break;
		case 18:
			retorno = estudiante.getCedulaMadre();
			break;
		case 19:
			retorno = estudiante.getObservaciones();
			break;
		case 20:
			retorno = estudiante.getImagen();
			break;
		case 21:
			retorno = String.valueOf(estudiante.getNumeroDeOrden());
			break;

		}

		return retorno;
	}

	public void setValueAt(Object valor, int fila, int col) {
		estudiante = manejadorDeEstudiante.getEstudiante().get(fila);

		switch (col) {

		case 2:
			estudiante.setNombre((String) valor);
			break;

		case 3:
			estudiante.setApellido((String) valor);
			break;
		case 4:
			estudiante.setDireccion((String) valor);
			break;
		case 5:
			estudiante.setTelefono1((String) valor);
			break;
		case 6:
			estudiante.setTelefono2((String) valor);
			break;
		case 7:
			estudiante.setEmail((String) valor);
			break;
		case 8:
			estudiante.setSexo((String) valor);
			break;
		case 9:
			estudiante.setEstadoCivil((String) valor);
			break;
		case 10:
			estudiante.setFechaNacimiento((String) valor);
			break;
		case 11:
			estudiante.setFechaInscripcion((String) valor);
			break;
		case 12:
			estudiante.setNacionalidad((String) valor);
			break;
		case 13:
			estudiante.setNombrePadre((String) valor);
			break;
		case 14:
			estudiante.setTelefonoPadre((String) valor);
			break;
		case 15:
			estudiante.setNombreMadre((String) valor);
			break;
		case 16:
			estudiante.setTelefonoMadre((String) valor);
			break;
		case 17:
			estudiante.setCedulaPadre((String) valor);
			break;
		case 18:
			estudiante.setCedulaMadre((String) valor);
			break;
		case 19:
			estudiante.setObservaciones((String) valor);
			break;
		case 20:
			estudiante.setImagen((String) valor);
			break;
		case 21:
			estudiante.setNumeroDeOrden((Integer) valor);
			break;

		}

	}

}
